﻿/*
 ***************************************************************************
 * Microsoft Visual C# .NET
 * 名称：       Shpm.System.Web.Control.CheckEmail
 * 类型：       服务端输入校验类
 * 功能说明：   E-Mail地址校验类
 * 作者：       郭晓庆
 * 创建日期：   2007/07/10
 * 修改日期     修改者      修改内容
 * 
 * 
 * ---
 ***************************************************************************
*/
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;

namespace Shpm.System.Web.Control
{
    public  class CheckEmail : ComAbsChecker
    {
        /** 帐号 */
        private readonly static String acount = "[\u0001-\u007F]+";
	    /** 域名 */
        private readonly static String domain = "([-a-z0-9]+[.])*[a-z]+";
	    /** IP */
        private readonly static String ipaddr = "[[\\d]{1,3}[.][\\d]{1,3}[.][\\d]{1,3}[.][\\d]{1,3}\"]";

	    /** 邮件地址 */
        private readonly  String pattern = "^" + acount + "@(" + domain + "|\"" + ipaddr + ")+$";

        /**
	     * 构造函数
	     * @param value 输入值
	     */
            public CheckEmail(String value)
                : base(value)
        {

	    }

        public CheckEmail(String value, Shpm.System.Validator.ComAbsMsg msg)
            : base(value, msg)
        {           
        }

	    /**
	     * E-Mail地址检查处理。
	     * @param value 输入值
	     * @return true:解析可 / false:解析不可
	     */
	    protected override bool doCheck(String value)
        {
		    // 未输入检查
		    if( base.isEmpty(value) ){
			    return true;
		    }

		    // 邮件地址检查
            return Regex.Matches(value, this.pattern, RegexOptions.IgnoreCase).Count == 0 ? false : true;
	    }
    }
}
